home *** CD-ROM | disk | FTP | other *** search
/ Utilities Professional 1-1500 / Utilities Professional 1-1500 (1994)(WPD)[!].iso / 00010250 / var0088.dms / var0088.adf / Guardian.doc < prev    next >
Text File  |  1988-03-04  |  11KB  |  215 lines

  1. ************************************************************************
  2. *                            GUARDIAN v1.1                             *
  3. *                        Antivirus Bootstrap                           *
  4. *  Copyright 1988 by Leonardo Fei, via A. Fava 6, 20125 Milano, Italy  *
  5. *                                                                      *
  6. *  IMPORTANT NOTE: This program is freely copyable and distributable.  *
  7. *  It is NOT Public Domain.    All rights are reserved by the author.  *
  8. *  You may give copies of this program to anyone you wish but you may  *
  9. *  not sell it.    This program is NOT to be published on any Italian  *
  10. *  'magazine+disk', not even as a 'sample' or 'demo'.                  *
  11. *                                                                      *
  12. ************************************************************************
  13.  
  14. Guardian is an antivirus program I wrote on impetus in a few days, after
  15. I discovered that a new virus had infected most of my disks.
  16.  
  17. Guardian does not steal even a single cycle of the machine's time, 
  18. because it's called only during boot.
  19.  
  20. While the other antivirus programs are tuned on a particular version or
  21. family of viruses, Guardian recognize any not-standard bootblock.  With
  22. 'standard bootblock' I mean a bootblock created by the Workbench INSTALL
  23. command.  This standard bootblock is contained into the Guardian code.
  24.  
  25. Guardian installs itself in place of the bootstrap module, and examine
  26. the contents of each bootblock by comparing it with the standard one,
  27. BEFORE it is actually executed.
  28.  
  29.  
  30. "WARNING !!! - THIS IS NOT A STANDARD BOOTBLOCK !!!"
  31. ----------------------------------------------------
  32.  
  33. If the bootblock code differs even by a single byte, an alert is
  34. displayed to warn the user of the possible threat contained in the
  35. bootcode, and an ASCII view of the suspect bootblock is given, to help
  36. you in recognizing it.  You may recognize a virus by text strings such
  37. as 'SCA!SCA!SCA!' or 'VIRUS BY BYTE BANDIT', but remember that there are
  38. also anonymous viruses around, without a single message into them. 
  39. So, always be very careful, even when you don't see these text strings.
  40.  
  41. The user can choose to regardless give control to the loaded bootblock, 
  42. or to execute the standard one contained into the Guardian code.
  43. The opportunity to execute the loaded bootcode is given because there
  44. are several not-standard bootblocks that actually don't contain viruses. 
  45. These are boot-intros, fast loaders, boot-menus and other custom
  46. bootblocks, which you can find on commercial and not-commercial disks.
  47. You'll need to execute them, if you want those disks to work properly.
  48.  
  49. If you decide to give the control to the loaded bootblock, the
  50. screen color will become red, to remind you that you've chosen the
  51. dangerous way.  A copy of ExecBase is made before actually executing the
  52. bootcode, and after the control is returned from the bootcode to
  53. Guardian, this copy is compared to the current ExecBase.  
  54.  
  55.  
  56. "WARNING !!! - ExecBase was altered by bootcode !!!"
  57. ----------------------------------------------------
  58.  
  59. If they differ even by a single byte, an alert is displayed, and you can
  60. decide to restore the old copy of ExecBase into its place, overwriting
  61. the changes made by the bootcode.  If you get this alert, you could
  62. have executed the 'BYTE BANDIT' virus.  Restoring the old
  63. ExecBase will overwrite the changes made to the Vertical Blanking
  64. Interrupt vector by the virus, and also its entry in the Resident
  65. Modules table.  This way, the virus won't freeze the machine (because it
  66. has been removed from VBlanking interrupt) and won't survive next reset
  67. (because its ResModules entry has been removed).  But there is still a
  68. problem.  During its execution time, this virus alters the trackdisk
  69. device library's offset table, so that the virus itself will be called
  70. each time the computer accesses a new disk (each time there's a 
  71. read/write command starting from block 0).  So you'll still get your
  72. disk infected by simply inserting them into any drive.  To solve this
  73. problem you can simply reset the machine.  This will force the offset
  74. table to be rebuilt, and since the virus has been removed from the
  75. ResModules table, it will be flushed completely from memory.  
  76.  
  77. The old 'SCA' virus will also cause this alert to appear, because it
  78. changes the contents of the CoolCapture vector, which is contained in
  79. the ExecBase.  Simply restoring the old ExecBase will completely remove
  80. this virus, and no further action is required.
  81.  
  82. If you choose not to restore the old ExecBase, Guardian could be removed
  83. from the ResModules table ('BYTE BANDIT' virus will surely do it, while
  84. 'SCA' one will pacifically cohabit) and you would be responsible of what
  85. could happen later.
  86.  
  87.  
  88. "WARNING !!! - THIS IS NOT A STANDARD BOOTBLOCK !!!"
  89. ----------------------------------------------------
  90.  
  91. If you choose not to give the control to the loaded bootblock, the
  92. screen color will become white as usual, and you are given the
  93. opportunity of installing the disk with the standard bootblock.  
  94.  
  95.  
  96. "Shall I replace IT with a STANDARD BOOTBLOCK ?"
  97. ------------------------------------------------
  98.  
  99. If the bootblock contains a virus, you should use this opportunity to
  100. replace it with the standard one.
  101.  
  102. ************************************************************************
  103.  WARNING!  Do not install the original disk, unless you have a backup
  104.  copy or unless you are absolutely sure of what you are doing.  Some
  105.  commercial programs come with a not-standard bootblock (fast-load,
  106.  intros, etc.) and you may be no more able to use those disks/programs
  107.  once that the original bootblock is overwritten with the standard one. 
  108. ************************************************************************
  109.  
  110.  
  111. "Disk is write-protected.  Shall I retry ?"
  112. -------------------------------------------
  113.  
  114. An additional alert is displayed if the disk is write protected.
  115.  
  116.  
  117. Load and use of Guardian
  118. ------------------------
  119.  
  120. Again, the best thing to do is to use this ** SAFE ** disk for the first
  121. boot, just after the computer is turned on (and after the Kickstart disk
  122. has been loaded into the A1000, of course !), before inserting ANY other
  123. boot disk into the internal drive.  If you NEVER remove this disk's
  124. write protection, you'll be sure that NO virus can place itself here,
  125. and when you are in doubt about any of your boot disks, you'll just have
  126. to turn off and on the computer and use this disk first.  There had been
  127. rumours about some new virus, writing also on write protected disks. 
  128. That's definitely NOT POSSIBLE.  The last word about write protection is
  129. left to the floppy drive itself, and there's no way to fool it.  It is
  130. possible to force the computer (the software) to believe the disk is not
  131. write protected.  This way you could 'perform' write operations on write
  132. protected disks, and the drive would behave as if it were actually
  133. writing on those disks, but at the end you would find their contents
  134. unchanged.  This would let you do some innocent jokes, but nothing else.
  135.  
  136. After you've removed the viruses from your disks, you could copy
  137. Guardian into their C directories, and call it from their 
  138. startup-sequences.
  139.  
  140. Guardian should be launched in the first place of the startup-sequence,
  141. because of its unusual method of initialization.  When it's called, it
  142. looks in the ResModules table to see if it's already there.  If this is
  143. not true (such as if it's launched for the first time), Guardian
  144. installs itself in memory and reset the machine, to force the reset code
  145. to build the ResModules table again.
  146.  
  147. From now on, you don't need to launch Guardian again, because it's
  148. mounted in a Resident Module, and therefore the reset code takes care of
  149. it, through reset and system crashes.  Guardian will survive any number
  150. of them, until the machine is forced to do a cold-start, or until a
  151. malfunctioning program trashes its memory area.  A label on the boot
  152. screen will inform the user whether and which version is currently
  153. installed.
  154.  
  155. When Guardian is launched and finds itself in the ResTable, it outputs
  156. an announcement in the initial cli and exits smoothly.
  157.  
  158. Guardian installs itself in a 'kind' way, saving the vectors that KickTagPtr
  159. and KickMemPtr may contain, but can't distinguish between a good and a bad
  160. boy.  Thus, I suggest that you launch Guardian as soon as you turn your
  161. computer on, before any virus has the chance of installing itself into your
  162. memory.  
  163.  
  164. To give viruses no chance at all, I've written Guardian v1.1r, which is
  165. installed into the Kickstart disk directly by the Creator program,
  166. in place of the never-used Debug() function (use it on a COPY of your
  167. original KS 1.2 disk!).  If you own an A1000, I strongly suggest to use
  168. v1.1r, instead of v1.1, because of two major benefits:  
  169. 1) it's in the Kickstart disk, so you don't need to place it anywhere else. 
  170. 2) it's active BEFORE ANY bootable disk is used, so it's SAFEST.
  171.    There is no chance it can be fooled by an already active virus, so you 
  172.    don't need to care about the disk you are using for the first boot.
  173.    The only way to 'fool' it, is by passing control (execute the code) to a
  174.    virus bootblock ('byte bandit' virus, for example).
  175.    So, always be sure of what you are doing when you decide to give control
  176.    to a suspect bootblock, especially when you get the alert of the 'altered
  177.    ExecBase'.
  178. The only drawback is that Exec function Debug() no longer exists.
  179. If you call this function, the computer will reset.
  180.  
  181. In Guardian v1.1r I've used the memory space of the "AMIGA WORKBENCH" text,
  182. on the disk label in the 'hand+disk' bootscreen, for the Guardian label. 
  183. Since I hardly boot with the original 'Workbench' disk, I didn't shed a
  184. single tear for this change.  8-)
  185.  
  186. Version 1.1 of Guardian was developed to work on A500/1000/2000, (version 
  187. 1.1r works on A1000 only), with release 1.2 of Kickstart (v33.180).
  188.  
  189.  
  190. *** July 14th, 1988 change to this instruction file
  191. ---------------------------------------------------
  192.  
  193. I used to ask for a small contribution at this point.  Please consider this
  194. version of the program absolutely free of any charge.  If you want to
  195. support further developments of this program, please note that version 1.2
  196. and 1.2r (sorry, no more freely copyable and redistributable) are already
  197. available from the author or from Transactor (UK) (and shortly also from
  198. Transactor Pub., Canada) at the cost of a Public Domain disk, which is 8000
  199. italian lire, 3 english pounds or 6 USD.
  200.  
  201. Guardian v1.2 has been greatly enhanced, both in terms of security and of
  202. versatility.
  203.  
  204. If you have any comment or suggestion, please let me know what you think.
  205. Thanks!
  206.  
  207.  
  208. Leonardo Fei
  209. via A. Fava 6
  210. 20125 Milano
  211. Italy 
  212.  
  213. BIX: LFEI
  214.  
  215.